summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2023-03-07 02:57:06 +0100
committerLiam <byteslice@airmail.cc>2023-03-13 03:06:53 +0100
commit8d1f5bfbd2f25b6d0970161bc3061db42f83789e (patch)
tree095e216d9ea0f49a943b55f02f5e8b60c6ff3186
parentkernel: convert KConditionVariable, KLightConditionVariable, KLightLock (diff)
downloadyuzu-8d1f5bfbd2f25b6d0970161bc3061db42f83789e.tar
yuzu-8d1f5bfbd2f25b6d0970161bc3061db42f83789e.tar.gz
yuzu-8d1f5bfbd2f25b6d0970161bc3061db42f83789e.tar.bz2
yuzu-8d1f5bfbd2f25b6d0970161bc3061db42f83789e.tar.lz
yuzu-8d1f5bfbd2f25b6d0970161bc3061db42f83789e.tar.xz
yuzu-8d1f5bfbd2f25b6d0970161bc3061db42f83789e.tar.zst
yuzu-8d1f5bfbd2f25b6d0970161bc3061db42f83789e.zip
-rw-r--r--src/core/CMakeLists.txt1
-rw-r--r--src/core/hle/kernel/k_condition_variable.cpp1
-rw-r--r--src/core/hle/kernel/k_linked_list.h238
-rw-r--r--src/core/hle/kernel/kernel.cpp4
-rw-r--r--src/core/hle/kernel/kernel.h1
5 files changed, 0 insertions, 245 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 75e0c4f38..c847fe824 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -211,7 +211,6 @@ add_library(core STATIC
hle/kernel/k_light_condition_variable.h
hle/kernel/k_light_lock.cpp
hle/kernel/k_light_lock.h
- hle/kernel/k_linked_list.h
hle/kernel/k_memory_block.h
hle/kernel/k_memory_block_manager.cpp
hle/kernel/k_memory_block_manager.h
diff --git a/src/core/hle/kernel/k_condition_variable.cpp b/src/core/hle/kernel/k_condition_variable.cpp
index b75957688..0dc01f6aa 100644
--- a/src/core/hle/kernel/k_condition_variable.cpp
+++ b/src/core/hle/kernel/k_condition_variable.cpp
@@ -4,7 +4,6 @@
#include "core/arm/exclusive_monitor.h"
#include "core/core.h"
#include "core/hle/kernel/k_condition_variable.h"
-#include "core/hle/kernel/k_linked_list.h"
#include "core/hle/kernel/k_process.h"
#include "core/hle/kernel/k_scheduler.h"
#include "core/hle/kernel/k_scoped_scheduler_lock_and_sleep.h"
diff --git a/src/core/hle/kernel/k_linked_list.h b/src/core/hle/kernel/k_linked_list.h
deleted file mode 100644
index 29ebd16b7..000000000
--- a/src/core/hle/kernel/k_linked_list.h
+++ /dev/null
@@ -1,238 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include <boost/intrusive/list.hpp>
-
-#include "common/assert.h"
-#include "core/hle/kernel/slab_helpers.h"
-
-namespace Kernel {
-
-class KernelCore;
-
-class KLinkedListNode : public boost::intrusive::list_base_hook<>,
- public KSlabAllocated<KLinkedListNode> {
-
-public:
- explicit KLinkedListNode(KernelCore&) {}
- KLinkedListNode() = default;
-
- void Initialize(void* it) {
- m_item = it;
- }
-
- void* GetItem() const {
- return m_item;
- }
-
-private:
- void* m_item = nullptr;
-};
-
-template <typename T>
-class KLinkedList : private boost::intrusive::list<KLinkedListNode> {
-private:
- using BaseList = boost::intrusive::list<KLinkedListNode>;
-
-public:
- template <bool Const>
- class Iterator;
-
- using value_type = T;
- using size_type = size_t;
- using difference_type = ptrdiff_t;
- using pointer = value_type*;
- using const_pointer = const value_type*;
- using reference = value_type&;
- using const_reference = const value_type&;
- using iterator = Iterator<false>;
- using const_iterator = Iterator<true>;
- using reverse_iterator = std::reverse_iterator<iterator>;
- using const_reverse_iterator = std::reverse_iterator<const_iterator>;
-
- template <bool Const>
- class Iterator {
- private:
- using BaseIterator = BaseList::iterator;
- friend class KLinkedList;
-
- public:
- using iterator_category = std::bidirectional_iterator_tag;
- using value_type = typename KLinkedList::value_type;
- using difference_type = typename KLinkedList::difference_type;
- using pointer = std::conditional_t<Const, KLinkedList::const_pointer, KLinkedList::pointer>;
- using reference =
- std::conditional_t<Const, KLinkedList::const_reference, KLinkedList::reference>;
-
- public:
- explicit Iterator(BaseIterator it) : m_base_it(it) {}
-
- pointer GetItem() const {
- return static_cast<pointer>(m_base_it->GetItem());
- }
-
- bool operator==(const Iterator& rhs) const {
- return m_base_it == rhs.m_base_it;
- }
-
- bool operator!=(const Iterator& rhs) const {
- return !(*this == rhs);
- }
-
- pointer operator->() const {
- return this->GetItem();
- }
-
- reference operator*() const {
- return *this->GetItem();
- }
-
- Iterator& operator++() {
- ++m_base_it;
- return *this;
- }
-
- Iterator& operator--() {
- --m_base_it;
- return *this;
- }
-
- Iterator operator++(int) {
- const Iterator it{*this};
- ++(*this);
- return it;
- }
-
- Iterator operator--(int) {
- const Iterator it{*this};
- --(*this);
- return it;
- }
-
- operator Iterator<true>() const {
- return Iterator<true>(m_base_it);
- }
-
- private:
- BaseIterator m_base_it;
- };
-
-public:
- constexpr KLinkedList(KernelCore& kernel_) : BaseList(), kernel{kernel_} {}
-
- ~KLinkedList() {
- // Erase all elements.
- for (auto it = begin(); it != end(); it = erase(it)) {
- }
-
- // Ensure we succeeded.
- ASSERT(this->empty());
- }
-
- // Iterator accessors.
- iterator begin() {
- return iterator(BaseList::begin());
- }
-
- const_iterator begin() const {
- return const_iterator(BaseList::begin());
- }
-
- iterator end() {
- return iterator(BaseList::end());
- }
-
- const_iterator end() const {
- return const_iterator(BaseList::end());
- }
-
- const_iterator cbegin() const {
- return this->begin();
- }
-
- const_iterator cend() const {
- return this->end();
- }
-
- reverse_iterator rbegin() {
- return reverse_iterator(this->end());
- }
-
- const_reverse_iterator rbegin() const {
- return const_reverse_iterator(this->end());
- }
-
- reverse_iterator rend() {
- return reverse_iterator(this->begin());
- }
-
- const_reverse_iterator rend() const {
- return const_reverse_iterator(this->begin());
- }
-
- const_reverse_iterator crbegin() const {
- return this->rbegin();
- }
-
- const_reverse_iterator crend() const {
- return this->rend();
- }
-
- // Content management.
- using BaseList::empty;
- using BaseList::size;
-
- reference back() {
- return *(--this->end());
- }
-
- const_reference back() const {
- return *(--this->end());
- }
-
- reference front() {
- return *this->begin();
- }
-
- const_reference front() const {
- return *this->begin();
- }
-
- iterator insert(const_iterator pos, reference ref) {
- KLinkedListNode* new_node = KLinkedListNode::Allocate(kernel);
- ASSERT(new_node != nullptr);
- new_node->Initialize(std::addressof(ref));
- return iterator(BaseList::insert(pos.m_base_it, *new_node));
- }
-
- void push_back(reference ref) {
- this->insert(this->end(), ref);
- }
-
- void push_front(reference ref) {
- this->insert(this->begin(), ref);
- }
-
- void pop_back() {
- this->erase(--this->end());
- }
-
- void pop_front() {
- this->erase(this->begin());
- }
-
- iterator erase(const iterator pos) {
- KLinkedListNode* freed_node = std::addressof(*pos.m_base_it);
- iterator ret = iterator(BaseList::erase(pos.m_base_it));
- KLinkedListNode::Free(kernel, freed_node);
-
- return ret;
- }
-
-private:
- KernelCore& kernel;
-};
-
-} // namespace Kernel
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index 59f832a3d..c236e9976 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -1320,7 +1320,6 @@ const Core::System& KernelCore::System() const {
struct KernelCore::SlabHeapContainer {
KSlabHeap<KClientSession> client_session;
KSlabHeap<KEvent> event;
- KSlabHeap<KLinkedListNode> linked_list_node;
KSlabHeap<KPort> port;
KSlabHeap<KProcess> process;
KSlabHeap<KResourceLimit> resource_limit;
@@ -1347,8 +1346,6 @@ KSlabHeap<T>& KernelCore::SlabHeap() {
return slab_heap_container->client_session;
} else if constexpr (std::is_same_v<T, KEvent>) {
return slab_heap_container->event;
- } else if constexpr (std::is_same_v<T, KLinkedListNode>) {
- return slab_heap_container->linked_list_node;
} else if constexpr (std::is_same_v<T, KPort>) {
return slab_heap_container->port;
} else if constexpr (std::is_same_v<T, KProcess>) {
@@ -1390,7 +1387,6 @@ KSlabHeap<T>& KernelCore::SlabHeap() {
template KSlabHeap<KClientSession>& KernelCore::SlabHeap();
template KSlabHeap<KEvent>& KernelCore::SlabHeap();
-template KSlabHeap<KLinkedListNode>& KernelCore::SlabHeap();
template KSlabHeap<KPort>& KernelCore::SlabHeap();
template KSlabHeap<KProcess>& KernelCore::SlabHeap();
template KSlabHeap<KResourceLimit>& KernelCore::SlabHeap();
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h
index 1b380a07b..183a4d227 100644
--- a/src/core/hle/kernel/kernel.h
+++ b/src/core/hle/kernel/kernel.h
@@ -47,7 +47,6 @@ class KEvent;
class KEventInfo;
class KHandleTable;
class KHardwareTimer;
-class KLinkedListNode;
class KMemoryLayout;
class KMemoryManager;
class KObjectName;